The present disclosure relates to performance optimizations of computer programs in general, and to expert systems for identifying opportunities to improved performance in a multiprocessor system in particular.
One of the main challenges of the multi-processor systems today is to achieve the implied increase in performance. However, for different reasons applications fail to perform at the expected speed. Therefore a myriad of performance tools, also referred to as profiling tools, are used to detect what causes the slowdown in parallel processing of a target system. Sometimes these tools are utilized together by an expert system where a set of strict rules will point finally to a bottleneck. Unfortunately the weak point of such expert systems is that the interrogation of the performance of each element consists of comparing its value to some predetermined threshold.
The threshold can be difficult to determine and may vary depending on system characteristics. For example, idleness of 20% may be acceptable throughput in a server, while idleness below 80% may be unacceptable in a client. In addition, thresholds are discrete while performance is continuous. Utilization level of 79% percent is not much different than 81%. Therefore, when determining a predetermined discrete threshold choosing a discrete value as the threshold may be problematic and inaccurate.
In many cases, there are multiple problems present in a target system and many possible Performance Improvement (PI) activities may be performed that are likely to improve performance. Some of the problems may be pronounced in some performance metrics and not in other. Determining in which PI activity the programmer should invest his time, may be hard when simple discrete thresholds are utilized separately for each metric.